/**
 * 文件名：@IocBeanResolver.java <br/>
 * 包名：cn.efunbox.afw.core.resolver <br/>
 * 项目名：afw-core <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.core.resolver;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * 类名：IocBeanResolver  <br />
 *
 * 功能：基于Spring IOC容器的解析器
 *
 * @author xtwin <br />
 * 创建时间：2015年12月4日 下午4:27:03  <br />
 * @version 2015年12月4日
 */
public class IocBeanResolver<T> implements Resolver<T>, ApplicationContextAware {

	// spring容器
	private ApplicationContext ctx;

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月4日 下午4:27:23<br/>
	 * 
	 * @param keyword
	 * @return
	 * @throws Exception <br/>
	 * @see cn.efunbox.afw.core.resolver.Resolver#resolve(java.lang.String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public T resolve(String keyword) throws Exception {
		return (T) ctx.getBean(keyword);
	}

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月4日 下午4:27:52<br/>
	 * 
	 * @param applicationContext
	 * @throws BeansException <br/>
	 * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
	 */
	@Override
	public void setApplicationContext(ApplicationContext ctx) throws BeansException {
		this.ctx = ctx;
	}
}
